//获取应用实例(获取app.js全局变量必须获取应用实例)
const App = getApp()

//条码、二维码生成
const wxbarcode = require("../../../../lib/wxbarcode/index.js")
//网络请求封装
import Request_post from "../../../../request/Request_post"
import Request_get from "../../../../request/Request_get"

//获取当天的日期
var getToday = require("../../../../utils/CustomFunction/getToday.js")
//获取当天的时间
var getNowTime = require("../../../../utils/CustomFunction/getNowTime.js")

const config = require("../../../../config/config");

// pages/Markeing/Markeing_Activitie/SalesOrder/SalesOrder.js
Page({

  /**
   * 页面的初始数据
   */
  data: {

		//默认抵用券图片LOGO
		Default_shopping_logo:config.imageUrl+"Default_shopping_logo.jpg",
		//默认兑换券图片LOGO
    Default_exchang_logo:config.imageUrl+"Default_exchang_logo.jpg",
    //默认停车券图片LOGO
		Default_parking_logo:config.imageUrl+"Default_parking_logo.jpg",  
		//默认活动的logo图(团购)
		Default_ActTypidlogo01: config.imageUrl+"Default_ActTypidlogo01.jpg",
		//默认活动的主图(团购)
		Default_ActTypidImage01: config.imageUrl+"Default_ActTypidImage01.jpg",
		//默认活动的logo图(秒杀)
		Default_ActTypidlogo02: config.imageUrl+"Default_ActTypidlogo02.jpg",
		//默认活动的主图(秒杀)
		Default_ActTypidImage02: config.imageUrl+"Default_ActTypidImage02.jpg",
		//默认活动的logo图(拼团)
		Default_ActTypidlogo03: config.imageUrl+"Default_ActTypidlogo03.jpg",
		//默认活动的主图(拼团)
		Default_ActTypidImage03: config.imageUrl+"Default_ActTypidImage03.jpg",


		/** 支付所需的变量 begin */
		// 购买数量默认：1
		salQty: 1,
		// 支付时按钮的状态控制
		payBt_Statu:false,
		// 支付按钮不同状态时显示的文字
		payBt_text:"确认支付",
		// 支付方式选择 单选框默认值
		payMentype:
		[
			{typeID:"01",name:"微信支付",image:"../../../image/wechatPay.png",checked:true},
			// {typeID:"02",name:"银联支付",image:"../../../image/bankPay.png",checked:false},
		],
		// 支付方式如果只有一项时，需要设置一个 this.data.typeID 的默认值
		typeID:"01",
		// 轮询次数初始值
		num:0,
		/** 支付所需的变量 end */



	},
	

  /** Vant: 输入数量 */
//   onChange(event) {
//     var Qty = event.detail;
//     let sum = this.data.salprc * Qty
//     this.setData({
// 			payamt:sum.toFixed(2),
// 			salQty: Qty
// 		})
// 		console.log(this.data.salQty,this.data.payamt)
//   },

  // 购买数量控制(减)
	// decrease:function(e){
  //   var that = this
  //   if(that.data.salQty == 1){
  //     wx.showToast({
  //       title: '不能再减了~',
  //       icon:'none'
  //     })
  //     return ;
  //   }
  //   var Qty = that.data.salQty - 1;
  //   that.setData({
  //     salQty: Qty,
  //   })
  //   let sum = that.data.salprc * that.data.salQty
  //   that.setData({
  //     payamt:sum.toFixed(2)
  //   })
  // },
 
  // 购买数量控制(加)
  // increase:function(e){
	// 	var that = this
	// 	if(that.data.salQty > that.data.mixbuyQty){
  //     wx.showToast({
  //       title: '抱歉您的购买数量已达上限',
  //       icon:'none'
  //     })
  //     return ;
  //   }
  //   var Qty = that.data.salQty + 1;
  //   that.setData({
  //     salQty: Qty,
  //   })
  //   let sum = that.data.salprc * that.data.salQty
  //   that.setData({
  //     payamt:sum.toFixed(2)
  //   })
  //   console.log(that.data.sum)
  // },


  //弹出层
  showPopup() {
		this.setData({ paymentShow: true });
  },
  onClose() {
    this.setData({ paymentShow: false });
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    var that = this
    that.setData({
			actbllno :options.bllno,
			mixbuyQty:options.mixbuyQty,
			typid:options.typid
		})
		// console.log(that.data.actbllno,that.data.mixbuyQty,that.data.typid)
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {

		// 获取当前页面的完整路径
		// var pagePath = this.route

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {
		var that = this
		var _mbrparams = wx.getStorageSync('StrMbrInfo').mbrparams
		if(that.data.typid == '03'){
			that.setData({
				button_text:'我要参团',
				salQty:1
			})
		}else{
			that.setData({
				button_text:'确认下单'
			})
		}
	
    // Api请求：14-002-在线活动详情查询
		Request_post.post(
			config.domainName+"api_olnmktact/olnmktact-list",
			{
				chtid: "",
				typid: "",
				actbllno: that.data.bllno,
				mbrparams: _mbrparams
			},
			function(res){
				if(res != "undefined" && res.return_no == 1){
					// 使用find方法，将数组使用匹配条件后，获取到唯一数组值，返回类型为 对象
					var tempCopinfo = res.return_data.actList.find(i => i.actbllno == that.data.actbllno)
					that.setData({
						actName: tempCopinfo.actdes,
						salprc: tempCopinfo.salprc,
						actlogo: tempCopinfo.logo,
						payamt: tempCopinfo.salprc,
					})
					// console.log(that.data.actName,that.data.salprc,that.data.actlogo,that.data.payamt)
				}
			}
    )
  },


	/** 取消活动秒杀下单 【微服务版】**/
	CancelMktsklOdr:function(){
		var that = this
		/** Api请求 微服务-购券秒杀-buycopseckill：取消秒杀下单 */
		Request_post.post(
			config.domainName+"api_olnmktseckill/olnmktseckill-cancel",		//支付取消.
			// 这里的传参，在秒杀下单里拿成功的回调
			{
				bllno: wx.getStorageSync('StrMktseckillodr').bllno,
				actbllno: wx.getStorageSync('StrMktseckillodr').actbllno,  
				date: wx.getStorageSync('StrMktseckillodr').date,  
				mbrid: wx.getStorageSync('StrMktseckillodr').mbrid,
				qty: wx.getStorageSync('StrMktseckillodr').qty,
			},
			function(res){
				if(res != 'undefined' && res.return_no == 1){
					// console.log('活动秒杀下单取消成功！')
					that.setData({
						payBt_Statu:false,
						payBt_text:"确认支付"
					})
					// 清除秒杀下单的缓存
					wx.removeStorageSync('StrMktseckillodr')
				}else{
					wx.showModal({
						title:"系统异常",
						content:"取消活动秒杀下单操作失败",
						showCancel:false,
					})
				}
			}
		)
	},



  /** 确认支付 */
	wxpayment:function(){
		var that = this
		var _mbrparams = wx.getStorageSync('StrMbrInfo').mbrparams
		that.setData({
			payBt_Statu:true,
			payBt_text:"正在支付..."
		})
		// 团购活动单单号：mbrid+时间戳
    let bllno = App.globalData.mbrid + Math.round(new Date() / 1000)
    // 团购活动的业务发生日期时间
    var today = getToday.getToday()													//获取当前日期	yyyy-mm-dd
    var getTime = getNowTime.getNowTime()   								//获取当前时间	hhmmss 	
    var todaytime = today+' '+getTime.substring(0,2)+':'+getTime.substring(2,4)+':'+getTime.substring(4,6)
		that.setData({
			oprdtm:todaytime,
			bllno:bllno
		})

		// console.log("秒杀的数量："+that.data.salQty)
		// return;

		/** Api请求：在线活动秒杀-olnmktseckill 秒杀下单 **/
		Request_post.post(
			config.domainName+"api_olnmktseckill/olnmktseckill",
			{
				bllno: that.data.bllno,
				actbllno: that.data.actbllno,    
				// qty: that.data.salQty,
				qty: 1,
				mbrparams: _mbrparams
			},
			function(res){
				// console.log(res)
				if( res && res.return_no == 1){
					// 秒杀成功后，先将秒杀的回调结果缓存
					wx.setStorageSync('StrMktseckillodr',res.return_data)
					/** Api请求：在线活动-奥博克支付-olnmkt_abapaysrv 支付请求-在线活动 */
					Request_post.post(
						config.domainName+"api_olnmkt_abapaysrv/pay",
						{
							bllno: that.data.bllno,
							amount: that.data.payamt,
							open_id: App.globalData.wx_openid,
							quantity: 1,
							bizparams: {
								mbrparams: _mbrparams,        
								copcltid: config.copcltid,
								echtmnid: config.echtmnid,
								mbrcltid: config.cltid,
								actbllno: that.data.actbllno,
    					}
						},
						function(res){
							if(res != 'undefined' && res.return_no == 1){
								that.setData({rsn:res.return_data.rsn})
								// console.log(that.data.rsn)
								/** Api请求：微信_Api ———— 发起微信支付 */
								wx.requestPayment({
									timeStamp: res.return_data.payment_params.timeStamp,			//发起支付请求时的时间戳
									nonceStr: res.return_data.payment_params.nonceStr,				//随机字符串
									package: res.return_data.payment_params.package,					//统一下单接口返回的 prepay_id=****（即：package的值）：
									signType: 'MD5',																					//签名算法，应与后台下单时的值一致
									paySign: res.return_data.payment_params.paySign,					//签名
									success:function(e){
										// console.log("微信支付成功后的回调：",e)
										wx.showLoading({
											title: '获取支付结果',
										});
										// 微信手机支付完成（手机端点击完成按钮）开始轮询支付结果
										that.keyId = setInterval(() => {
											var numVlu = that.data.num + 1	//轮询的次数累加
											that.setData({num:numVlu})
											that.wxPay_Result();						//轮询时执行的方法
										},1500)	//轮询间隔1.5秒执行一次
									},
									fail:function(i){
										// 微信支付调用失败时 fail:function(i){} 取消秒杀下单
										that.CancelMktsklOdr()
										that.setData({payBt_Statu:false,payBt_text:"确认支付",show: false })
									}
								})
							}else{
								that.setData({payBt_Statu:false,payBt_text:"确认支付",show: false })
								wx.showModal({
									title:"支付请求失败",
									showCancel:false,
									success: function (res) {
										if (res.confirm) {
											that.setData({payBt_Statu:false,payBt_text:"确认支付",show: false })
											wx.redirectTo({
												url:"/SubpkgMarketing/pages/Activity/GrpSecActList/GrpSecActList"
											})
										}
									}
								})
							}
						}
					)
				}else{
					// 秒杀调用失败
					wx.showModal({
						title:"请求异常",
						content:res.return_msg,
						showCancel:false,
						success: function (res) {
							if (res.confirm) {
								that.setData({payBt_Statu:false,payBt_text:"确认支付",show: false })
								wx.redirectTo({
									url:"/SubpkgMarketing/pages/Activity/GrpSecActList/GrpSecActList"
								})
							}
						}
					})
				}
			}
		)
	},


	/* 微信支付结果查询，支付后轮询时调用此方法 */
	wxPay_Result:function(){
		var that = this
		/** Api请求 在线活动-奥博克支付-olnmkt_abapaysrv 支付结果查询 */
		Request_get.get(
			config.domainName+"api_olnmkt_abapaysrv/payresult",
			{
				biztypid: "olnmktact",
				bllno: that.data.bllno,
				paybllno: that.data.rsn
			},
			function(res){
				// console.log(res)
				if( res != 'undefined' && res.return_no == 1 ){
					if(res.return_data.state === "SUCCESS"){
						wx.hideLoading();
						clearInterval(that.keyId)		// 终止轮询
						wx.removeStorageSync('StrMktseckillodr') 		// 删除营销活动下单缓存
						wx.redirectTo({ 
							url: '/pages/Public/PaymentSuccess/PaymentSuccess?paybllno='+res.return_data.paybllno+'&bllno='+res.return_data.bllno+'&bizcfmdtm='+res.return_data.bizcfmdtm+'&amount='+that.data.payamt+'&typid='+that.data.typid
						})
					}else if(res.return_data.state == 'FAILED'){
						wx.hideLoading()
						clearInterval(that.keyId)		//终止轮询
						// 支付结果轮询 == “FAILED”时，取消秒杀下单
						that.CancelMktsklOdr();
						wx.showModal({
							title:"支付失败",
							content:"抱歉，你发起的支付失败了\r\n异常业务订单号：\r\n"+that.data.bllno,
							showCancel:false,
							success: function (res) {
								if (res.confirm) {
									that.setData({payBt_Statu:false,payBt_text:"确认支付",show: false })
									wx.redirectTo({
										url:App.globalData.homePage
									})
								}
							}
						})
					}else if(res.return_data.state != 'SUCCESS' && that.data.num == 60){
						clearInterval(that.keyId)		//终止轮询
						/** Api请求：在线活动-奥博克支付-olnmkt_abapaysrv  支付结果补充查询 */
						Request_get.get(
							config.domainName+"api_olnmkt_abapaysrv/payresultfix",
							{ rsn: that.data.rsn },
							function(res){
								if(res != 'undefined' && res.return_no == 1 && res.return_data.trade_status == 'SUCCESS'){
									wx.hideLoading();
									clearInterval(that.keyId)		// 终止轮询
									wx.removeStorageSync('StrMktseckillodr') 		// 删除营销活动下单缓存
									wx.redirectTo({ 
										url: '/pages/Public/PaymentSuccess/PaymentSuccess?paybllno='+res.return_data.paybllno+'&bllno='+res.return_data.bllno+'&bizcfmdtm='+res.return_data.bizcfmdtm+'&amount='+that.data.payamt+'&typid='+that.data.typid
									})
								}else{
									wx.hideLoading()
									wx.showModal({
										title:".支付结果异常",
										content:"抱歉，您的支付发生了异常\r\n异常业务订单号：\r\n"+that.data.bllno,
										showCancel:false,
										success: function (res) {
											if (res.confirm) {
												that.setData({payBt_Statu:false,payBt_text:"确认支付",show: false })
												wx.redirectTo({
													url:"/SubpkgMarketing/pages/Activity/GrpSecActList/GrpSecActList"
												})
											}
										}
									})
								}
							}
						)
					}
				}else{    //每间隔1秒做一次轮询，轮询60次（60秒）后，还没有获得支付成功的结果就判定支付失败！。
					wx.hideLoading();
					clearInterval(that.keyId);		// 终止轮询
					wx.showModal({
						title:"支付异常",
						content:"未获取到支付成功结果\r\n异常业务订单号：\r\n"+that.data.bllno,
						showCancel:false,
						success: function (res) {
							if (res.confirm) {
								that.setData({payBt_Statu:false,payBt_text:"确认支付",show: false })
								wx.redirectTo({
									url:"/SubpkgMarketing/pages/Activity/GrpSecActList/GrpSecActList"
								})
							}
						}
					})
				}
			}
		)
	},















  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function () {

  }





})